#pragma once
#include"Hash_tables.h"
template<class K>
struct setkov {
	const K& operator()(const K&key) {
		return key;
	}
};

template<class K,class hashfunc=hashfun<K>>
class unordered_set {
public:
	typedef typename hash_bucket::HashTable<K,K, setkov<K>>::iterator iterator;

	bool insert(const K& key) {
		return ht.insert(key).second;
	}
	bool erase(const K& key) {
		return ht.erase(key);
	}
	iterator begin() {
		return ht.begin();
	}
	iterator end() {
		return ht.end();
	}
	iterator find(const K& key) {
		return ht.find(key);
	}
private:
	hash_bucket::HashTable<K, K,setkov<K>>ht;
};